package com.atguigu.gulimail.gateway.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;

/**
 * 这个类是统一写法
 * 配置类  需要建一个类，这个类是统一配置跨域类
 * 跨域请求前会有一个预请求，只需要给返回预请求的响应头中放上允许跨域的配置就可以了
 * 统一进行过跨域配置之后，局部就不能在配置跨域了
 */
@Configuration
public class GulimailCorsConfiguration {
    @Bean
    public CorsWebFilter corsWebFilter(){
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration corsConfiguration=new CorsConfiguration();
        //在这个类中配置跨域
        corsConfiguration.addAllowedHeader("*");//允许所有头部
        corsConfiguration.addAllowedMethod("*");//允许所有方法
        corsConfiguration.addAllowedOrigin("*");//允许所有来源
        corsConfiguration.setAllowCredentials(true);//允许携带cookie

        //path：/** 表明所有路径的请求都要进行跨域配置
        source.registerCorsConfiguration("/**",corsConfiguration);
        return new CorsWebFilter(source);
    }

}
